package com.itheima.case2.utils;

import java.util.HashMap;
import java.util.ResourceBundle;

public class BeansFactory {
    //1.定义静态方法生成单例对象
    /*
        1.创建一个Map集合对象,new HashMap<String,Object>
                key : 配置文件等号左边的内容userService roleService
                value:保存对象
        2.创建静态方法生成单例对象
        3.在静态方法体中根据集合对象调用集合中的get方法根据key获取value  value = map.get(key)
        4.判断获取的value是否等于null
        5.如果value等于null，说明集合中还没有存储对象，创建对象
        6.将创建的对象和key存储到map集合中 map:userService   obj
        7.返回对象
     */
    /*
         1.创建一个Map集合对象,new HashMap<String,Object>
                key : 配置文件等号左边的内容userService roleService
                value:保存对象
     */
    private static HashMap<String,Object> map=new HashMap<>();
    //2.创建静态方法生成单例对象
    public static synchronized <T> T getBean(String key) throws Exception{
    //3.在静态方法体中根据集合对象调用集合中的get方法根据key获取value  value = map.get(key)
        Object obj = map.get(key);
        //4.判断获取的value是否等于null
        if (obj==null){
            // 5.如果value等于null，说明集合中还没有存储对象，创建对象
            ResourceBundle beans = ResourceBundle.getBundle("beans");
            //通过配置文件的key：UserService获取value的值com.itheima.case2.service.impl.UserServiceImpl
            String str = beans.getString(key);
            //获取class对象
            Class<?> clazz = Class.forName(str);
            obj = clazz.newInstance();
            //6.将创建的对象和key存储到map集合中 map:userService   obj
                map.put(key,obj);
        }
        //7.返回对象
        return (T) obj;
    }
}
